package battleco

import (
	"wails/schema/config/commonco"
	"wails/schema/enums/battleenum"
)

// C移动器
// @schema_export --ident=schema --json --config=移动器
// @schema_go
// @cache_ts
// @alias 移动器
type C移动器 struct {
	// @alias 名称
	M名称 string `link:"文本"`
	// @alias 描述
	M描述 string `link:"文本"`

	// @alias 标旗
	B标旗 map[battleenum.Y移动标旗]bool

	// @alias 移动方式
	Y移动方式 battleenum.Y移动方式

	// 被传送的单位获得的速度修正
	// @alias 移动速度修正
	Y移动速度修正 *commonco.S数值修正

	// 用于格子类的游戏
	// @alias 移动范围修正
	Y移动范围修正 *commonco.S数值修正

	// @alias 消耗方式
	X消耗方式 battleenum.Y移动消耗方式
	// @alias 消耗
	X消耗 *S消耗
	// (HeightMap) 移动器可进行交互的高度映射
	// @alias 高度图
	G高度图 battleenum.G高度图

	// @alias 路径控制模式
	L路径控制模式 battleenum.L路径模式
}

// C移动器_躲避
// @schema_export --ident=schema --json --config=移动器
// @schema_go
// @cache_ts
// @alias 移动器_躲避
type C移动器_躲避 struct {
	C移动器
}

// todo: 导弹可以设置运动相关的参数
// @schema_export --ident=schema --json --config=移动器
// @schema_go
// @cache_ts
// @alias 移动器_飞行
type C移动器_飞行 struct {
	C移动器
}

// @schema_export --ident=schema --json --config=移动器
// @schema_go
// @cache_ts
// @alias 移动器_跳跃
type C移动器_跳跃 struct {
	C移动器

	// @alias 跳跃模式
	T跳跃模式 battleenum.Y移动器跳跃模式

	// 【固定的水平速度】模式时需要设置
	// @alias 水平初速度
	S水平初速度 float64

	// @alias 垂直初速度
	C垂直初速度 float64

	// 【固定的重力加速度】模式时需要设置
	// @alias 重力加速度
	Z重力加速度 float64

	// @alias 禁止转向
	J禁止转向 bool
}
